package main

func main() {
	// l3 := ListNode{
	// 	Val:  4,
	// 	Next: nil,
	// }

	// l2 := ListNode{
	// 	Val:  2,
	// 	Next: &l3,
	// }

	l1 := ListNode{
		Val:  1,
		Next: nil,
	}

	// k3 := ListNode{
	// 	Val:  4,
	// 	Next: nil,
	// }

	// k2 := ListNode{
	// 	Val:  3,
	// 	Next: &k3,
	// }

	k1 := ListNode{}

	mergeTwoLists(&l1, &k1)

}

func mergeTwoLists(list1 *ListNode, list2 *ListNode) *ListNode {
	if list1 == nil {
		return list2
	}
	if list2 == nil {
		return list1
	}
	// 定义一个结果节点
	var res *ListNode
	// 当l1节点的值大于l2节点的值，那么res指向l2的节点，从l2开始遍历，反之从l1开始
	if list1.Val >= list2.Val {
		res = list2
		res.Next = mergeTwoLists(list1, list2.Next)
	} else {
		res = list1
		res.Next = mergeTwoLists(list1.Next, list2)
	}
	return res
}

type ListNode struct {
	Val  int
	Next *ListNode
}
